Jackson একটি জনপ্রিয় Java লাইব্রেরি যা JSON ডেটার Serialization (Java Object থেকে JSON এ রূপান্তর) এবং Deserialization (JSON থেকে Java Object এ রূপান্তর) সহজতর করে। এখানে @JsonInclude এবং @JsonSetter ব্যবহার করে কিভাবে Serialization কাস্টমাইজ করা যায় তা আলোচনা করা হলো।
1. @JsonInclude
@JsonInclude অ্যানোটেশনটি ব্যবহার করা হয় JSON এ কোন কোন প্রোপার্টি অন্তর্ভুক্ত হবে তা নির্ধারণ করতে।
সাধারণ ব্যবহার
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL) // null মানের প্রোপার্টি বাদ দেওয়া হবে
public class User {
private String name;
private Integer age;
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
ব্যাখ্যা
JsonInclude.Include.NON_NULL: শুধুমাত্র non-null প্রোপার্টি JSON এ অন্তর্ভুক্ত হবে।- অন্যান্য অপশন:
ALWAYS: সব প্রোপার্টি অন্তর্ভুক্ত হবে (default)।NON_EMPTY: null বা খালি ভ্যালু বাদ দেওয়া হবে।NON_DEFAULT: শুধুমাত্র non-default মানের প্রোপার্টি অন্তর্ভুক্ত হবে।
উদাহরণ
User user = new User();
user.setName("John");
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(user);
System.out.println(jsonString); // Output: {"name":"John"}
2. @JsonSetter
@JsonSetter অ্যানোটেশনটি Deserialization এর সময় নির্দিষ্ট প্রোপার্টি সেট করতে কাস্টমাইজড কনফিগারেশন প্রদান করে।
সাধারণ ব্যবহার
import com.fasterxml.jackson.annotation.JsonSetter;
public class User {
private String name;
@JsonSetter("user_name") // JSON এর "user_name" ফিল্ড "name" প্রোপার্টিতে সেট হবে
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
ব্যাখ্যা
@JsonSetterএকটি কাস্টম JSON ফিল্ড ম্যাপ করার জন্য ব্যবহৃত হয়, যা Deserialization এর সময় কাজ করে।
উদাহরণ
String json = "{ \"user_name\": \"Alice\" }";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println(user.getName()); // Output: Alice
দুইটি একসাথে ব্যবহার
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSetter;
@JsonInclude(JsonInclude.Include.NON_EMPTY) // খালি ভ্যালু বাদ
public class User {
private String name;
@JsonSetter("user_name") // JSON ফিল্ড ম্যাপ
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
উদাহরণ
String json = "{ \"user_name\": \"Bob\", \"age\": \"\" }";
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(json, User.class);
System.out.println(user.getName()); // Output: Bob
String serializedJson = mapper.writeValueAsString(user);
System.out.println(serializedJson); // Output: {"name":"Bob"}
@JsonIncludeব্যবহার করে আপনি Serialization এর সময় নির্দিষ্ট প্রোপার্টি বাদ দিতে পারেন।@JsonSetterব্যবহার করে Deserialization এর সময় JSON ফিল্ড এবং Java ফিল্ড এর মধ্যে ম্যাপিং কাস্টমাইজ করতে পারেন।- এই অ্যানোটেশনগুলো ডেটা মডেলিং এবং JSON ফর্ম্যাটের উপর নিয়ন্ত্রণ বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Content added By
Read more